package com.itheima.demo; // 声明包路径，表示这个类位于com.itheima.demo包下
// 空白注释行，用于代码分隔和阅读方便
public class GoldCard extends Card{ // 定义GoldCard类，使用extends关键字继承自Card父类
    // 定义GoldCard类的构造函数，接收四个参数
    public GoldCard(String card, String name, String phone, double money) {
        super(card, name, phone, money); // 调用父类Card的构造函数，初始化继承的属性
    }

    @Override // 使用@Override注解标记这是一个重写的方法（重写父类Card中的consume方法）
    public void consume(double money) { // 定义消费方法，参数money表示消费金额
        System.out.println("您当前金卡消费：" + money); // 打印当前的消费金额
        System.out.println("优惠后的价格：" + money * 0.8); // 计算并打印金卡8折优惠后的实际价格
        // 判断账户余额是否足够支付优惠后的价格
        if(getMoney() < money * 0.8){ // getMoney()调用从父类继承的方法获取当前余额
            // 如果余额不足，打印余额信息和提示
            System.out.println("您余额是：" + getMoney() + ", 当前余额不足！请存钱！");
            return; // 直接结束方法，不再执行后续代码
        }
        // 更新金卡的账户余额。
        setMoney(getMoney() - money * 0.8); // 调用setMoney()方法更新余额，减去优惠后的金额
        System.out.println("您当前金卡余额：" + getMoney()); // 打印更新后的余额
        // 判断消费如果大于200，调用一个独有的功能，打印洗车票。
        if(money * 0.8 >= 200){ // 判断实际支付金额是否大于等于200
            printTicket(); // 调用GoldCard特有的洗车票打印方法
        }else { // 如果实际支付金额小于200
            System.out.println("您当前消费不满200，不能免费洗车！"); // 打印不能洗车的提示
        }
    }

    // 打印洗车票。
    public void printTicket() { // 定义GoldCard类特有的方法，用于打印洗车票
        System.out.println("您消费了，请打印洗车票。"); // 打印洗车票的提示信息
    }
}
